//只有一个测试数据是对的，为什么？
//#include <iostream>
//#include <vector>
//#include <string>
//
//// 通用的比较函数模板
//template<typename T>
//bool reverseCompare(const T& a, const T& b) {
//    return a > b;
//}
//
//// 删除字符串中特定字符的函数
//std::string removeChar(const std::string& str, char ch) {
//    std::string result;
//    for (std::string::const_iterator it = str.begin(); it!= str.end(); ++it) {
//        char c = *it;
//        if (c!= ch && c!= ch + 32 && c!= ch - 32) {
//            result += c;
//        }
//    }
//    return result;
//}
//
//int main() {
//    char targetChar;
//    std::cin >> targetChar;
//
//    std::vector<std::string> strs;
//    std::string input;
//    while (std::cin >> input && input!= "@") {
//        strs.push_back(input);
//    }
//
//    std::vector<std::string> newStrs;
//    for (std::vector<std::string>::iterator it = strs.begin(); it!= strs.end(); ++it) {
//        newStrs.push_back(removeChar(*it, targetChar));
//    }
//
//    // 使用冒泡排序和模板函数进行逆序排序
//    for (std::vector<std::string>::iterator i = newStrs.begin(); i!= newStrs.end(); ++i) {
//        for (std::vector<std::string>::iterator j = i + 1; j!= newStrs.end(); ++j) {
//            if (!reverseCompare(*i, *j)) {
//                std::string temp = *i;
//                *i = *j;
//                *j = temp;
//            }
//        }
//    }
//
//    for (std::vector<std::string>::iterator it = newStrs.begin(); it!= newStrs.end(); ++it) {
//        std::cout << *it << std::endl;
//    }
//
//    return 0;
//}


//交到CG的对的代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

// 删除字符串中的特定字符
string removeChar(const string& str, char ch) {
    string result;
    for (string::const_iterator it = str.begin(); it!= str.end(); ++it) {
        if (*it!= ch) {
            result += *it;
        }
    }
    return result;
}

// 比较函数用于字典逆序排序
bool reverseCompare(const string& a, const string& b) {
    size_t i = 0, j = 0;
    while (i < a.length() && j < b.length()) {
        if (a[i]!= b[j]) {
            return a[i] > b[j];
        }
        ++i;
        ++j;
    }
    return a.length() > b.length();
}

int main() {
    char targetChar;
    cin >> targetChar;

    vector<string> strs;
    string input;
    while (cin >> input && input!= "@") {
        strs.push_back(input);
    }

    vector<string> newStrs;
    for (vector<string>::iterator it = strs.begin(); it!= strs.end(); ++it) {
        newStrs.push_back(removeChar(*it, targetChar));
    }

    // 进行字典逆序排序
    sort(newStrs.begin(), newStrs.end(), reverseCompare);

    for (vector<string>::iterator it = newStrs.begin(); it!= newStrs.end(); ++it) {
        cout << *it << endl;
    }

    return 0;
}